# -*- coding: utf-8 -*-
import sys
#reload(sys)
#sys.setdefaultencoding('gbk')
from scipy import stats
import numpy as np
import matplotlib.pyplot as plt

X = stats.norm(loc=1, scale=2)
print(X.stats()) #计算随机变量的期望和方差
x = X.rvs(size=10000) #取随机值
print(np.mean(x), np.var(x))
print(stats.norm.fit(x)) #拟合
print(stats.kstest(x, 'norm', (np.mean(x), np.std(x)))) #p值>0.05为正态分布。适用于小样本
t = np.arange(-4,6,0.001)
plt.plot(t, X.pdf(t)) #概率密度的理论值，离散为pmf
plt.plot(t, X.cdf(t)) #累计分布函数
plt.show()
print(X.ppf(0.5)) #累计分布的反函数，分位点

#离散分布，色子
X = range(1,7)
p = (0.4,0.2,0.1,0.1,0.1,0.1)
dice = stats.rv_discrete(values=(X,p))
print(dice.rvs(size=20))

lambda_ = 10.
t = np.arange(20)
ps = stats.poisson.pmf(t, lambda_)
bi = stats.binom.pmf(t, 100, lambda_/100)
plt.plot(t, ps)
plt.plot(t, bi)
plt.show()

y = stats.expon.rvs(size=1000000)
print(np.mean(y**4))


#常见分布：
#beta     beta分布
#f     F分布
#gamma     gam分布
#poisson     泊松分布
#hypergeom     超几何分布
#lognorm     对数正态分布
#binom     二项分布
#uniform     均匀分布
#chi2     卡方分布
#cauchy     柯西分布
#laplace     拉普拉斯分布
#rayleigh     瑞利分布
#t     学生T分布
#norm     正态分布
#expon     指数分布